{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 无人机路径规划报告（part_1）\n",
    "\n",
    "* 姓名：杨鹏\n",
    "* 学号：2018300468\n",
    "\n",
    "## 1. 任务简介\n",
    "**1.1背景概述**\n",
    "\n",
    "目前无人机虽然实现了自动飞行，但是大部分的无人机仍不具备感知环境、动态适应环境的能力。本课题通过一步一步实现无人机的感知、路径规划、仿真，通过本项目理解无人机系统的感知与控制。\n",
    "\n",
    "\n",
    "**1.2任务**:\n",
    "\n",
    "* 首先根据所给地图文件，绘制出地图网格，并用不同颜色标志区别起点，终点和障碍\n",
    "\n",
    "* 其次学习并实现A * 算法，在这个阶段可以假设环境地图都已知，规划全局的地图，并显示在GUI界面上\n",
    "\n",
    "* 模拟激光雷达扫描。模拟从当前位置发射多条射线，判断障碍物是否在射线上。把结果显示在在GUI界面上\n",
    "\n",
    "* 设计动态路径的算法，并实现该算法。测试所实现的方法和示例效果的差别，并改进\n",
    "\n",
    "* 功能实现后进行代码重构\n",
    "\n",
    "**1.3文件和数据说明**:\n",
    "\n",
    "|数据文件名|格式|功用|\n",
    " |-|-|-|\n",
    " |test_1.map   |map|地图数据集1，包含地图尺寸，起点终点位置，障碍位置|\n",
    " |test_7.map   |map|地图数据集7，包含地图尺寸，起点终点位置，障碍位置|\n",
    "\n",
    "\n",
    "信息名|格式|内容\n",
    ":--:|:--:|:--:\n",
    "f_mag|uint32_t|文件标识，内容是：0x15432345\n",
    "MAP.mx|int|map的宽度-mx，像素数\n",
    "MAP.my|int|map的长度-my，像素数\n",
    "startX|int|起点的X坐标\n",
    "startY|int|起点的Y坐标\n",
    "endX|int|终点的X坐标\n",
    "endY|int|终点的Y坐标\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 报告内容简述\n",
    "1.本报告为第一部分，主要实现地图文件的读取和可视化，以及A* 算法路径规划\n",
    "\n",
    "2.使用matlab编程，matlab可以简单实现网格的可视化，并且相对于c语言，在矩阵运算上方便快捷，因此使用matlab进行编程。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.实现过程\n",
    "\n",
    "### 3.1 地图文件读取\n",
    ".map文件为二进制文件，其中包含了地图的各个信息。\n",
    "\n",
    "使用matlab中的文件打开函数fopen打开文件，并分别将各个信息保存\n",
    "\n",
    "地图读取程序如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "UsageError: Cell magic `%%` not found.\n"
     ]
    }
   ],
   "source": [
    "%%\n",
    "%读取地图文件\n",
    "a='D:\\Git\\aircraft-information-system-design\\project-uav-planning\\maps\\test_1.map';  %文件地址\n",
    "fp = fopen(a);\n",
    "if( fp == -1 )\n",
    "    disp(\"ERR: failed to open file \" + a + newline);\n",
    "    return;\n",
    "end\n",
    "f_mag = fread(fp, 1, 'uint32');\n",
    "if( f_mag ~= hex2dec('15432345') )     %十六进制转二进制判断\n",
    "    disp(\"ERR: input file format is not correct! \" + a + newline);\n",
    "    fclose(fp);\n",
    "    return;\n",
    "end\n",
    "MAP.my = fread(fp, 1, 'int32');   %读取地图尺寸\n",
    "MAP.mx = fread(fp, 1, 'int32');\n",
    "% read map\n",
    "MAP.map = fread(fp, [MAP.mx MAP.my], 'int8');\n",
    "MAP.map = MAP.map';   %数据需要转置\n",
    "%读障碍坐标\n",
    "n=1;\n",
    "for i=1:MAP.my\n",
    "    for j=1:MAP.mx\n",
    "        if MAP.map(i,j)==1\n",
    "            ob(1,n)=i; ob(2,n)=j;\n",
    "            n=n+1;\n",
    "        end\n",
    "    end\n",
    "end\n",
    "% 读起始点和终止点坐标\n",
    "MAP.startY = fread(fp, 1, 'int32');\n",
    "MAP.startX = fread(fp, 1, 'int32');\n",
    "% MAP.startY =40;\n",
    "% MAP.startX =70;\n",
    "MAP.nowx=MAP.startX;   %现在点坐标\n",
    "MAP.nowy=MAP.startY;\n",
    "MAP.endY = fread(fp, 1, 'int32');\n",
    "MAP.endX = fread(fp, 1, 'int32');\n",
    "fclose(fp);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 网格可视化实现\n",
    "matlab使用句柄操作可以简单实现网格可视化，输入一个二维数组，赋值0或1，既可显示一个简单的界面\n",
    "\n",
    "通过第一步读取.map文件，把map读取到一个二维数组中，就能画出该地图\n",
    "\n",
    "代码如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%\n",
    "%----------------网格初始化-------------------------\n",
    "set(gcf,'DoubleBuffer','on');\n",
    "S=MAP.map;\n",
    "S(MAP.startX,MAP.startY)=1;\n",
    "S(MAP.endX,MAP.endY)=2;\n",
    "Ii=imshow(cat(3,(S==1),(S==2),MAP.map));\n",
    "axis square;"
   ]
  },
  {
   "attachments": {
    "%E5%9C%B0%E5%9B%BE1.png": {
     "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcUAAAHBCAYAAAAYUKCSAAAHcklEQVR4nO3dXW7TQBhA0Qblvex/lckKTJCuCjUu+WkTN55z/NSCitUgXX2aGXt3OBymFwDg5cfaNwAA34UoAkBEEQAiigAQUQSAiCIAZL/0zdefr4++DwC4u+Ph+N8/NykCQEQRACKKAJDFNcW53ekCgGczvVz3JFOTIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKAJD92jcAa5hmX+9WuQvguzEpAkBEEQAiigAQa4oMyRoisMSkCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCADZr30D3M90uuZ2pws+4v8MozMpAkBEEQAiigAQUQSAiCIARBQBIKIIABFFAIjD+zCwpcP6MDKTIgBEFAEgoggAEUUAiI02wBtvxGB0JkUAiCgCQEQRAGJNcTDzw9rWkAD+MCkCQEQRACKKABBrioOxhgjwMZMiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgIgiAEQUASCiCAARRQCIKAJARBEAIooAEFEEgOzXvgG+znS6/rY7XQBczqQIABFFAIgoAkBEEQAiigAQUQSAiCIARBQBIA7vA2/mD4D4zUMgGIlJEQAiigAQUQSAWFOEgc3XC5fWFGEkJkUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABAPBN8wL4wFuI5JEQAiigAQUQSAiCIAxEabDfEWdYDPMSkCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiJcMw8C8iBreMykCQEQRACKKABBRBIDYaAO82Z0uGJlJEQAiigAQUQSAiCIARBQBIKIIABFFAIgoAkBEEQAiigAQUQSAiCIARBQBIKIIABFFAIgoAkC8ZBgGMZ2uOS8VhvdMigAQUQSAiCIARBQBIKIIABFFAIgoAkBEEQAiigAQUQSAiCIARBQBIB4IvmFLD3uePxTaA6G3y2cN1zMpAkBEEQAiigAQUQSAiCIARBQBIKIIABFFAIjD+7AR88P6wPVMigAQUQSAiCIARBQBIDbaDG5pc4a3KWyDzxGuZ1IEgIgiAEQUASDWFAczX2dy4Ps5+dzgPkyKABBRBICIIgDEmuLgls6yzdernHdb3yVriD4n+DyTIgBEFAEgoggAEUUAiI02nGXjzWPZVAPrMSkCQEQRACKKABBrivzj3EPDvZj48fx+4TFMigAQUQSAiCIARBQBIDbacNa5jTdL37Mx5GPnDuf73cF6TIoAEFEEgIgiAMSaIldbWvNywH+Zh3vDczEpAkBEEQAiigAQa4p8iVvOMp77Gc/IGiI8N5MiAEQUASCiCAARRQCIjTbcxSWbSS458H/Lz73FJf/2LWyqgediUgSAiCIARBQBINYUWc291h2/ivVAGI9JEQAiigAQUQSAiCIAxEYbvjWbXYBHMikCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRALJf+wbg06bZ17tV7gLYAJMiAEQUASCiCACxpsjzs4YIfBGTIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRACKKABBRBICIIgBEFAEgoggAEUUAiCgCQEQRALK/5C9NpwsAts6kCAARRQCIKAJAFtcUj4fjo+8DAFZnUgSA/AKD811vq9vaSgAAAABJRU5ErkJggg=="
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果如下图所示：\n",
    "\n",
    "红色表示起点，绿色表示终点，粉色为边界和障碍\n",
    "![%E5%9C%B0%E5%9B%BE1.png](attachment:%E5%9C%B0%E5%9B%BE1.png)\n",
    "\n"
   ]
  },
  {
   "attachments": {
    "%E5%9C%B0%E5%9B%BE2.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![%E5%9C%B0%E5%9B%BE2.png](attachment:%E5%9C%B0%E5%9B%BE2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 A* 算法实现路径规划\n",
    "A* 算法关键词：最短路径，当前代价，预估代价\n",
    "\n",
    "经过一段时间学习，我简单概括一下A* 算法内容与过程：\n",
    "\n",
    "A* 算法用于路径规划，其特点在于使用“代价”来评判选择路径优先程度。过程为：首先确定起点和终点，从起点开始，以起点四周或周围八格开始选择路径，计算给一个方格的当前代价和预估代价，当前代价为从起点到该格要走的距离，预估代价为该格到终点的距离。计算周围格子的当前代价和预估代价之和，并比较该和值，选择和最小的方格作为最优先的路径，并重复该操作，直到能找到终点位置。\n",
    "\n",
    "本次A* 算法实现，我选择了周围四格，即无人机前进方向只有上下左右四个方向，计算代价值采用曼哈顿距离，避免开方运算\n",
    "\n",
    "以下为代码实现："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "UsageError: Cell magic `%%` not found.\n"
     ]
    }
   ],
   "source": [
    "%%\n",
    "%------------------实现A*算法------------------\n",
    "%下方向为X正向，向右为y正向\n",
    "%第一步，将起点放入开启列表，寻找起点四周的四个点，将其放入开启列表，然后从开启列表中删除起点，放入关闭列表\n",
    "open_list=[MAP.nowx ;MAP.nowy;0];\n",
    "close_list=[];\n",
    "close_list(1,end+1)=open_list(1,1); close_list(2,end)=open_list(2,1);\n",
    "\n",
    "open_list(1,end+1)=open_list(1,1)-1; open_list(2,end)=open_list(2,1);\n",
    "open_list(1,end+1)=open_list(1,1)+1; open_list(2,end)=open_list(2,1);\n",
    "open_list(1,end+1)=open_list(1,1); open_list(2,end)=open_list(2,1)+1;\n",
    "open_list(1,end+1)=open_list(1,1); open_list(2,end)=open_list(2,1)-1;\n",
    "open_list(:,1)=[];\n",
    "% open_list\n",
    "% close_list\n",
    "\n",
    "%第二步，计算每个附近点的F值，将其放在open_list中\n",
    "%open_list第一行为x坐标，第二行为y坐标，三四五为H,G,F，六七行为父节点xy坐标。\n",
    "for i=1:length(open_list(1,:))\n",
    "    %%------------计算预估距离------------------\n",
    "    %%-----------采用曼哈顿距离-----------\n",
    "    H=abs(open_list(1,i)-MAP.endX)+abs(open_list(2,i)-MAP.endY);  \n",
    "    open_list(3,i)=H;\n",
    "    open_list(4,i)=1;\n",
    "    open_list(5,i)=open_list(4,i)+open_list(3,i);\n",
    "    open_list(6,i)=close_list(1,1);\n",
    "    open_list(7,i)=close_list(2,1);\n",
    "end\n",
    "% open_list\n",
    "\n",
    "\n",
    "%第三步，开始循环\n",
    "while( 1)\n",
    "    %从开启列表中找到F值最小的格子，将其从开启列表中删除，并放进关闭列表中\n",
    "    [Fmin ind]=sort(open_list(5,:));\n",
    "    close_list(1,end+1)=open_list(1,ind(1)); close_list(2,end)=open_list(2,ind(1));\n",
    "    %三 四行存放父节点\n",
    "    close_list(3,end)=open_list(6,ind(1)); close_list(4,end)=open_list(7,ind(1));\n",
    "    open_list(:,ind(1))=[];\n",
    "%     open_list\n",
    "%     close_list\n",
    "\n",
    "    rp_list=[close_list(1,end)-1 close_list(1,end)+1 close_list(1,end) close_list(1,end);close_list(2,end) close_list(2,end) close_list(2,end)+1 close_list(2,end)-1];\n",
    "    %rp_list存放每个判断点四周的格子的xy坐标\n",
    "    S(close_list(1,end),close_list(2,end))=1;\n",
    "    set(Ii,'CData',cat(3,(S==1),(S==2),MAP.map) );\n",
    "    S(close_list(1,end),close_list(2,end))=0;\n",
    "    \n",
    "    %循环判断每一个附近的格子\n",
    "    for i=1:length(rp_list(1,:))\n",
    "        %如果附近的格子在关闭列表内或者是障碍，则不操作\n",
    "        if MAP.map(rp_list(1,i),rp_list(2,i))==1 | sum(ismember(close_list(1:2,:)',[rp_list(1,i) rp_list(2,i)],'row' ))==1\n",
    "            %MAP.map(rp_list(1,i),rp_list(2,i))==1 | sum(ismember(close_list(1:2,:)',[rp_list(1,i) rp_list(2,i)],'row' ))==1\n",
    "            continue;    \n",
    "        else \n",
    "            %否者，如果方格不在开启列表中，将其加入开启列表，并计算F值，设置父节点\n",
    "            if sum(ismember(open_list(1:2,:)',[rp_list(1,i) rp_list(2,i)],'row' ))==0\n",
    "                open_list(1,end+1)=rp_list(1,i); open_list(2,end)=rp_list(2,i);\n",
    "                H=abs(rp_list(1,i)-MAP.endX)+abs(rp_list(2,i)-MAP.endY);\n",
    "                open_list(3,end)=H;\n",
    "                open_list(4,end)=abs(rp_list(1,i)-MAP.startX)+abs(rp_list(2,i)-MAP.startY);\n",
    "                open_list(5,end)=open_list(4,end)+open_list(3,end);\n",
    "                open_list(6,end)=close_list(1,end);\n",
    "                open_list(7,end)=close_list(2,end);\n",
    "                \n",
    "                %绘制边界点\n",
    "                S(rp_list(1,i),rp_list(2,i))=2;\n",
    "                set(Ii,'CData',cat(3,(S==1),(S==2),MAP.map) );\n",
    "                pause(0.001);\n",
    "                \n",
    "                %open_list  %查看open_list\n",
    "            else\n",
    "                %如果在，计算从起点到该点的距离，即为当前的G，与原先的G比较\n",
    "                %若小于，替换小的G，重新计算F，替换父节点\n",
    "                j=find(ismember(open_list(1:2,:)',[rp_list(1,i) rp_list(2,i)],'row' )==1);\n",
    "                G1=abs(rp_list(1,i)-MAP.startX)+abs(rp_list(2,i)-MAP.startY);\n",
    "                G2=open_list(4,j);\n",
    "                if G1<G2\n",
    "                    open_list(4,j)=G1;\n",
    "                    open_list(5,j)=open_list(4,j)+open_list(3,j);\n",
    "                    open_list(6,j)=rp_list(1,i);\n",
    "                    open_list(7,j)=rp_list(2,i);\n",
    "                end\n",
    "            end    \n",
    "        end\n",
    "    end\n",
    "    %当终点被包含在开启列表中时，代表能寻路，此时终止寻路\n",
    "    if sum(ismember(open_list(1:2,:)',[MAP.endX,MAP.endY],'row' ))==1\n",
    "        disp('寻路完毕');\n",
    "        break;\n",
    "    end    \n",
    "end"
   ]
  },
  {
   "attachments": {
    "GIF%202022-1-2%2023-39-56.gif": {
     "image/gif": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以地图1为例，结果如下图，其中绿色为探索边界，即为开启列表中的各个方格，当边界探索到终点时，寻路结束\n",
    "\n",
    "以下为实现动态过程：\n",
    "![GIF%202022-1-2%2023-39-56.gif](attachment:GIF%202022-1-2%2023-39-56.gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.4 路径可视化\n",
    "在每一次计算后我都把对应方格的父方格更新在开启列表和关闭列表中，因此只要从开启列表中找到终点，再找到其对应的父节点，再根据父节点在关闭列表中找到下一个节点，并由此循环直至找到起点，将各个点标出，即为本次寻路的最短路径。\n",
    "\n",
    "路径可视化程序实现如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "UsageError: Cell magic `%%` not found.\n"
     ]
    }
   ],
   "source": [
    "%%\n",
    "disp('绘制路径中。。。。')\n",
    "%绘制路径，根据每次放入关闭列表中，方格对应的父节点，从终点开始一次寻找父节点，既能绘制出路径\n",
    "ind_fin=find(ismember(open_list(1:2,:)',[MAP.endX MAP.endY ],'row')==1);\n",
    "S(open_list(6,ind_fin),open_list(7,ind_fin))=1;\n",
    "set(Ii,'CData',cat(3,(S==1),(S==2),MAP.map) );\n",
    "pause(0.1);\n",
    "ind_next=find(ismember(close_list(1:2,:)',[open_list(6,ind_fin) open_list(7,ind_fin)],'row')==1);\n",
    "% close_list(3,ind_next)\n",
    "% close_list(4,ind_next)\n",
    "S(close_list(3,ind_next),close_list(4,ind_next))=1;\n",
    "set(Ii,'CData',cat(3,(S==1),(S==2),MAP.map) );\n",
    "pause(0.1);\n",
    "while (1)\n",
    "    ind_next=find(ismember(close_list(1:2,:)',[close_list(3,ind_next) close_list(4,ind_next)],'row')==1);\n",
    "%     close_list(3,ind_next)\n",
    "%     close_list(4,ind_next)\n",
    "    if ind_next==1\n",
    "        disp('路径绘制完毕');\n",
    "        break;\n",
    "    end\n",
    "    %绘制\n",
    "    S(close_list(3,ind_next),close_list(4,ind_next))=1;\n",
    "    set(Ii,'CData',cat(3,(S==1),(S==2),MAP.map) );\n",
    "    pause(0.1);\n",
    "end"
   ]
  },
  {
   "attachments": {
    "GIF%202022-1-2%2023-43-37.gif": {
     "image/gif": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "路径动态过程如下：\n",
    "![GIF%202022-1-2%2023-43-37.gif](attachment:GIF%202022-1-2%2023-43-37.gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "因为本次实现规定无人机只能按照上下左右四个方向运动，因此无法实现“走斜线”，而显然走斜线才是最短的，但是因为每次只走一格，所以一格为单位路径，走斜线和走直线效果是一样的，所以可视这种情况为最短路径"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.5 实现模拟雷达\n",
    "待完成。。。。\n",
    "\n",
    "想法：\n",
    "\n",
    "首先，无人机在地图未知，起始点和终点已知的情况下先进行A* 路径搜索，然后让有雷达搜索功能的无人机按照这个路径前进，并探索，把障碍记录下来，当无人机遇到障碍时，就根据已知的障碍再重新规划路径，并重复此操作，直到找到终点为止。\n",
    "\n",
    "雷达功能实现：\n",
    "\n",
    "1.假设以无人机为圆心，半径为r的圆为雷达搜索范围，搜索地图内为障碍的点\n",
    "\n",
    "2.由第一步找到的障碍点会有“过界”，因此还需要对障碍点进行筛选，找到没有过界的点\n",
    "\n",
    "做法1：循环遍历地图每个点，计算到无人机当前位置的距离，如果在半径范围内，并且点对应的值为1（即为障碍和墙壁），则认为雷达判断出地形了，记录下来。\n",
    "\n",
    "雷达探测实现，下一步，路径规划\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
